Libraries:
Irrigation Area:
Data :
# import libraries
import geopandas as gpd
import pandas as pd
import folium
from shapely.geometry import Point, LineString, Polygon
# read file
# colo
colo_path = 'https://raw.githubusercontent.com/dimasrdwiaji/gis-jij/main/map_00020011_D_I_%20Colo.json'
raw_colo = gpd.read_file(colo_path)
# semen
semen_path = 'https://raw.githubusercontent.com/dimasrdwiaji/gis-jij/main/map_00020012_D_I_%20Semen_Krinjo.json'
raw_semen = gpd.read_file(semen_path)
# klambu
klambu_path = 'https://raw.githubusercontent.com/dimasrdwiaji/gis-jij/main/map_00030004_D_I_%20Klambu.json'
raw_klambu = gpd.read_file(klambu_path)
# sedadi
sedadi_path = 'https://raw.githubusercontent.com/dimasrdwiaji/gis-jij/main/map_00030009_D_I_%20Sedadi.json'
raw_sedadi = gpd.read_file(sedadi_path)
# sidorejo
sidorejo_path = 'https://raw.githubusercontent.com/dimasrdwiaji/gis-jij/main/map_00030013_D_I_%20Sidorejo.json'
raw_sidorejo = gpd.read_file(sidorejo_path)
# bodri trompo
bodri_path = 'https://raw.githubusercontent.com/dimasrdwiaji/gis-jij/main/map_00030014_D_I_%20Bodri%20Trompo.json'
raw_bodri = gpd.read_file(bodri_path)
# progo manggis
progo_path = 'https://raw.githubusercontent.com/dimasrdwiaji/gis-jij/main/map_00040002_D_I_%20Progo%20Manggis_Kalibening.json'
raw_progo = gpd.read_file(progo_path)
# define function to subset/ separate irrigation channel and building
def subset_channel(x):
result = gpd.GeoDataFrame(x[x['geometry'].geom_type == 'LineString'])
# drop null values
result = result.dropna(subset='n_aset')
return result
def subset_building(x):
result = gpd.GeoDataFrame(x[x['geometry'].geom_type == 'Point'])
return result
# define area that would be subsetted
irrigation_area = [
raw_colo,
raw_semen,
raw_klambu,
raw_sedadi,
raw_sidorejo,
raw_bodri,
raw_progo
]
# subset irrigation channel and irrigation building
# NOTE : i should use a loop function here so i dont repeat the code too often. But, idk how to programmatically create named global variable inside function
# channel
colo_channel = subset_channel(raw_colo)
semen_channel = subset_channel(raw_semen)
klambu_channel = subset_channel(raw_klambu)
sedadi_channel = subset_channel(raw_sedadi)
sidorejo_channel = subset_channel(raw_sidorejo)
bodri_channel = subset_channel(raw_bodri)
progo_channel = subset_channel(raw_progo)
# infrastructure
colo_infra = subset_building(raw_colo)
semen_infra = subset_building(raw_semen)
klambu_infra = subset_building(raw_klambu)
sedadi_infra = subset_building(raw_sedadi)
sidorejo_infra = subset_building(raw_sidorejo)
bodri_infra = subset_building(raw_bodri)
progo_infra = subset_building(raw_progo)
# Colo (basemap)
# Irrigation channel
colo_tmap = colo_channel.explore(
column = 'n_aset',
tiles = 'OpenStreetMap',
popup = [
'n_di',
'nama',
'nomenklatur',
'n_aset',
'panjang_saluran',
'luas_layanan',
],
highlight = True,
name = 'Jenis Saluran',
tooltip = [
'nama',
'n_aset',
],
legend_kwds = dict(
{
'caption': 'Jenis Saluran',
}
),
)
# Irrigation infrastructure
colo_infra_map = colo_infra.explore(
m = colo_tmap,
column = 'n_aset',
name = 'Aset Irigasi',
popup = [
'n_di',
'nama',
'nomenklatur',
'k_aset',
'saluran'
],
tooltip = [
'nama',
'nomenklatur',
],
highlight = True,
legend = False,
marker_kwds = dict(
{
'radius' : 5,
}
)
)
# Semen
# Irrigation channel
semen_tmap = semen_channel.explore(
column = 'n_aset',
tiles = 'OpenStreetMap',
popup = [
'n_di',
'nama',
'nomenklatur',
'n_aset',
'panjang_saluran',
'luas_layanan',
],
highlight = True,
name = 'Jenis Saluran',
tooltip = [
'nama',
'n_aset',
],
legend_kwds = dict(
{
'caption': 'Jenis Saluran',
}
),
)
# Irrigation infrastructure
semen_infra_map = semen_infra.explore(
m = semen_tmap,
column = 'n_aset',
name = 'Aset Irigasi',
popup = [
'n_di',
'nama',
'nomenklatur',
'k_aset',
'saluran'
],
tooltip = [
'nama',
'nomenklatur',
],
highlight = True,
legend = False,
marker_kwds = dict(
{
'radius' : 5,
}
)
)
# Klambu
# Irrigation channel
klambu_tmap = klambu_channel.explore(
column = 'n_aset',
tiles = 'OpenStreetMap',
popup = [
'n_di',
'nama',
'nomenklatur',
'n_aset',
'panjang_saluran',
'luas_layanan',
],
highlight = True,
name = 'Jenis Saluran',
tooltip = [
'nama',
'n_aset',
],
legend_kwds = dict(
{
'caption': 'Jenis Saluran',
}
),
)
# Irrigation infrastructure
klambu_infra_map = klambu_infra.explore(
m = klambu_tmap,
column = 'n_aset',
name = 'Aset Irigasi',
popup = [
'n_di',
'nama',
'nomenklatur',
'k_aset',
'saluran'
],
tooltip = [
'nama',
'nomenklatur',
],
highlight = True,
legend = False,
marker_kwds = dict(
{
'radius' : 5,
}
)
)
# Sedadi
# Irrigation channel
sedadi_tmap = sedadi_channel.explore(
column = 'n_aset',
tiles = 'OpenStreetMap',
popup = [
'n_di',
'nama',
'nomenklatur',
'n_aset',
'panjang_saluran',
'luas_layanan',
],
highlight = True,
name = 'Jenis Saluran',
tooltip = [
'nama',
'n_aset',
],
legend_kwds = dict(
{
'caption': 'Jenis Saluran',
}
),
)
# Irrigation infrastructure
sedadi_infra_map = sedadi_infra.explore(
m = sedadi_tmap,
column = 'n_aset',
name = 'Aset Irigasi',
popup = [
'n_di',
'nama',
'nomenklatur',
'k_aset',
'saluran'
],
tooltip = [
'nama',
'nomenklatur',
],
highlight = True,
legend = False,
marker_kwds = dict(
{
'radius' : 5,
}
)
)
# Sidorejo
# Irrigation channel
sidorejo_tmap = sidorejo_channel.explore(
column = 'n_aset',
tiles = 'OpenStreetMap',
popup = [
'n_di',
'nama',
'nomenklatur',
'n_aset',
'panjang_saluran',
'luas_layanan',
],
highlight = True,
name = 'Jenis Saluran',
tooltip = [
'nama',
'n_aset',
],
legend_kwds = dict(
{
'caption': 'Jenis Saluran',
}
),
)
# Irrigation infrastructure
sidorejo_infra_map = sidorejo_infra.explore(
m = sidorejo_tmap,
column = 'n_aset',
name = 'Aset Irigasi',
popup = [
'n_di',
'nama',
'nomenklatur',
'k_aset',
'saluran'
],
tooltip = [
'nama',
'nomenklatur',
],
highlight = True,
legend = False,
marker_kwds = dict(
{
'radius' : 5,
}
)
)
# Bodri Trompo
# Irrigation channel
bodri_tmap = bodri_channel.explore(
column = 'n_aset',
tiles = 'OpenStreetMap',
popup = [
'n_di',
'nama',
'nomenklatur',
'n_aset',
'panjang_saluran',
'luas_layanan',
],
highlight = True,
name = 'Jenis Saluran',
tooltip = [
'nama',
'n_aset',
],
legend_kwds = dict(
{
'caption': 'Jenis Saluran',
}
),
)
# Irrigation infrastructure
bodri_infra_map = bodri_infra.explore(
m = bodri_tmap,
column = 'n_aset',
name = 'Aset Irigasi',
popup = [
'n_di',
'nama',
'nomenklatur',
'k_aset',
'saluran'
],
tooltip = [
'nama',
'nomenklatur',
],
highlight = True,
legend = False,
marker_kwds = dict(
{
'radius' : 5,
}
)
)
# Progo Manggis
# Irrigation channel
progo_tmap = progo_channel.explore(
column = 'n_aset',
tiles = 'OpenStreetMap',
popup = [
'n_di',
'nama',
'nomenklatur',
'n_aset',
'panjang_saluran',
'luas_layanan',
],
highlight = True,
name = 'Jenis Saluran',
tooltip = [
'nama',
'n_aset',
],
legend_kwds = dict(
{
'caption': 'Jenis Saluran',
}
),
)
# Irrigation infrastructure
progo_infra_map = progo_infra.explore(
m = progo_tmap,
column = 'n_aset',
name = 'Aset Irigasi',
popup = [
'n_di',
'nama',
'nomenklatur',
'k_aset',
'saluran'
],
tooltip = [
'nama',
'nomenklatur',
],
highlight = True,
legend = False,
marker_kwds = dict(
{
'radius' : 5,
}
)
)
# Add interactivity
map_list = [
colo_tmap,
semen_tmap,
klambu_tmap,
sedadi_tmap,
sidorejo_tmap,
bodri_tmap,
progo_tmap,
]
for e in map_list:
folium.TileLayer(
tiles = 'https://tiles.stadiamaps.com/tiles/outdoors/{z}/{x}/{y}{r}.png',
attr = '© <a href="https://stadiamaps.com/">Stadia Maps</a>, © <a href="https://openmaptiles.org/">OpenMapTiles</a> © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors',
control = True,
name = 'Stadia Outdoors').add_to(e)
folium.TileLayer(
tiles = 'https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}{r}.png',
attr = '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors © <a href="https://carto.com/attributions">CARTO</a>',
control = True,
subdomains = 'abcd',
name = 'CartoDB Positron').add_to(e)
folium.TileLayer(
tiles = 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',
attr = 'Tiles © Esri — Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community',
control = True,
name = 'ESRI World Imagery').add_to(e)
folium.LayerControl().add_to(e)
colo_tmap
semen_tmap
klambu_tmap
sedadi_tmap
sidorejo_tmap
bodri_tmap
progo_tmap